package eventos.abrir;

import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;

import javax.swing.JFrame;

import controlador.IControladorAtributo;
import controlador.IObjDelModConRefExternaEntidad;
import eventos.EventoQuitarAtributo;
import eventos.EventoQuitarEntidadRol;
import eventos.aceptar.EventoAceptarRelacionNueva;

import vista.ventanas.VentanaRelacion;

public class EventoAbrirVentanaRelacion extends MouseAdapter
{
	private JFrame ventanaPadre;
	private IObjDelModConRefExternaEntidad controladorRelacion;
	private IControladorAtributo controladorAtributo;
	
	public EventoAbrirVentanaRelacion(JFrame ventanaPadre, IObjDelModConRefExternaEntidad controladorRelacion, IControladorAtributo controladorAtributo) 
	{
		super();
		this.ventanaPadre = ventanaPadre;
		this.controladorRelacion = controladorRelacion;
		this.controladorAtributo = controladorAtributo;
	}

	public void mouseClicked(MouseEvent e)
	{
		VentanaRelacion ventana = new VentanaRelacion(this.ventanaPadre, this.controladorRelacion.getProyectoActual().getTipoDeRelaciones());
	
		EventoAceptarRelacionNueva eventoAceptar = new EventoAceptarRelacionNueva(ventana, controladorRelacion);
		ventana.escucharEventosBotonAceptar(eventoAceptar);
		
		agregarEventos(ventana);
		
		ventana.setVisible(true);
	}

	protected void agregarEventos(VentanaRelacion ventana)
	{
		EventoAbrirVentanaAtributo eventoAbrirVentanaAtributo = new EventoAbrirVentanaAtributo(ventana, controladorAtributo);
		ventana.escucharEventoNuevoAtributo(eventoAbrirVentanaAtributo);
		
		EventoEditarAtributo eventoEditarAtributo = new EventoEditarAtributo(ventana, controladorAtributo);
		ventana.escucharEventoEditarAtributo(eventoEditarAtributo);

		EventoQuitarAtributo eventoQuitarAtributo = new EventoQuitarAtributo(ventana);
		ventana.escucharEventoEliminarAtributo(eventoQuitarAtributo);
		
		EventoAgregarEntidadRol eventoAgregarEntidadRol = new EventoAgregarEntidadRol(ventana, controladorRelacion);
		ventana.escucharEventosAgregarEntidadRol(eventoAgregarEntidadRol);
		
		EventoQuitarEntidadRol eventoQuitarEntidadRol = new EventoQuitarEntidadRol(ventana);
		ventana.escucharEventosEliminarEntidadRol(eventoQuitarEntidadRol);
		
		EventoEditarEntidadRol eventoEditarEntidadRol = new EventoEditarEntidadRol(ventana, controladorRelacion);
		ventana.escucharEventosEditarEntidadRol(eventoEditarEntidadRol);
	}
	
	protected JFrame getVentanaPadre(){
		return this.ventanaPadre;
	}
	
	protected IObjDelModConRefExternaEntidad getControlador(){
		return this.controladorRelacion;
	}

}
